package com.xoa.controller.template;

import com.xoa.model.template.TemplateModule;
import com.xoa.service.template.TemplateService;
import com.xoa.util.CookiesUtil;
import com.xoa.util.ToJson;
import com.xoa.util.common.session.SessionUtils;
import com.xoa.util.dataSource.ContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by gsb on 2017/8/7.
 */
@Controller
@RequestMapping("/template")
public class TemplateController {

    @Resource
    private TemplateService templateService;

    @RequestMapping("/redTemplateSelect")
    public String redTemplateSelect(HttpServletRequest request) {
        Cookie redisSessionCookie = CookiesUtil.getCookieByName(request, "redisSessionId");
        String loginDateSouse = SessionUtils.getSessionInfo(request.getSession(), "loginDateSouse", String.class, redisSessionCookie);
        ContextHolder.setConsumerType("xoa" + loginDateSouse);
        return "app/common/red_template";
    }


    /**
     * @作者：张航宁
     * @时间：2017/8/7
     * @介绍：根据条件分页查询数据
     * @参数：templateModule
     */
    @ResponseBody
    @RequestMapping("/query")
    public ToJson<TemplateModule> queryTemplate(TemplateModule templateModule, Integer page, Integer pageSize, Boolean useFlag) {
        return templateService.queryTemplate(templateModule, page, pageSize, useFlag);
    }

    /**
     * @作者：张航宁
     * @时间：2017/8/7
     * @介绍：添加一个模板信息
     * @参数：template file
     */
    @ResponseBody
    @RequestMapping("/add")
    public void addTemplate(HttpServletRequest request,HttpServletResponse response, TemplateModule template, @RequestParam(required = false) MultipartFile file) {
        templateService.addTemplate(request,response, template, file);
    }

    /**
     * @作者：张航宁
     * @时间：2017/8/7
     * @介绍：更新一个模板信息
     * @参数：template
     */
    @ResponseBody
    @RequestMapping("/update")
    public void updateTemplate(TemplateModule template, @RequestParam(required = false) MultipartFile file, Integer deleteFlag, HttpServletRequest request, HttpServletResponse response) {
        templateService.updateTemplate(template, file, deleteFlag, request, response);
    }

    /**
     * @作者：张航宁
     * @时间：2017/8/7
     * @介绍：删除一条模板信息
     * @参数：id
     */
    @ResponseBody
    @RequestMapping("/deleteById")
    public ToJson<TemplateModule> deleteTemplate(Integer id) {
        return templateService.deleteTemplate(id);
    }

    /**
     * @作者：张航宁
     * @时间：2017/8/12
     * @介绍：根据角色权限查询模板信息
     * @参数：
     */
    @ResponseBody
    @RequestMapping("/queryTemplateByPriv")
    public ToJson<TemplateModule> queryTemplateByPriv(TemplateModule templateModule, Integer page, Integer pageSize, Boolean useFlag, HttpServletRequest request) {
        return templateService.queryTemplateByPriv(templateModule, page, pageSize, useFlag, request);
    }
    @ResponseBody
    @RequestMapping("/queryTemplateByPrivs")
    public ToJson<TemplateModule> queryTemplateByPrivs(TemplateModule templateModule, Integer page, Integer pageSize, Boolean useFlag, HttpServletRequest request) {
        return templateService.queryTemplateByPrivs(templateModule, page, pageSize, useFlag, request);
    }
    //lsa添加，，模板管理不需要权限
    @ResponseBody
    @RequestMapping("/queryAll")
    public ToJson<TemplateModule> queryAllTemplate(TemplateModule templateModule, Integer page, Integer pageSize, Boolean useFlag) {
        return templateService.queryAll(templateModule, page, pageSize, useFlag);
    }
}
